Skip to content

Commit

Permalink
Revert "CV2-4126 shift to use video via sync endpoint (#1762)" (#1826)
Browse files Browse the repository at this point in the history
This reverts commit f614337.
  • Loading branch information
DGaffney authored Mar 15, 2024
1 parent 91dc040 commit bbce222
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 127 deletions.
2 changes: 1 addition & 1 deletion app/models/bot/alegre.rb
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ def self.run(body)
if body.dig(:event) == 'create_project_media' && !pm.nil?
Rails.logger.info("[Alegre Bot] [ProjectMedia ##{pm.id}] This item was just created, processing...")
self.get_language(pm)
if ['audio', 'image', 'video'].include?(self.get_pm_type(pm))
if self.get_pm_type(pm) == "audio" || self.get_pm_type(pm) == "image"
self.relate_project_media(pm)
else
self.send_to_media_similarity_index(pm)
Expand Down
14 changes: 1 addition & 13 deletions app/models/concerns/alegre_v2.rb
Original file line number Diff line number Diff line change
Expand Up @@ -131,14 +131,6 @@ def generic_package_media(project_media, params)
).merge(params)
end

def generic_package_video(project_media, params)
generic_package_media(project_media, params)
end

def delete_package_video(project_media, _field, params)
generic_package_video(project_media, params)
end

def generic_package_image(project_media, params)
generic_package_media(project_media, params)
end
Expand Down Expand Up @@ -175,10 +167,6 @@ def get_context(project_media, field=nil)
context
end

def store_package_video(project_media, _field, params)
generic_package_video(project_media, params)
end

def store_package_image(project_media, _field, params)
generic_package_image(project_media, params)
end
Expand Down Expand Up @@ -291,7 +279,7 @@ def relate_project_media(project_media, field=nil)
end

def get_items_with_similar_media_v2(media_url, threshold, team_ids, type)
alegre_path = ['audio', 'image', 'video'].include?(type) ? self.sync_path_for_type(type) : "/#{type}/similarity/search/"
alegre_path = ['audio', 'image'].include?(type) ? self.sync_path_for_type(type) : "/#{type}/similarity/search/"
# FIXME: Stop using this method from v1 once all media types are supported by v2
# FIXME: Alegre crashes if `media_url` was already requested before, this is why I append a hash
self.get_items_with_similar_media("#{media_url}?hash=#{SecureRandom.hex}", threshold, team_ids, alegre_path)
Expand Down
2 changes: 1 addition & 1 deletion test/models/bot/alegre_2_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def teardown
pm1 = create_project_media team: @team, media: create_uploaded_video
pm2 = create_project_media team: @team, media: create_uploaded_video
pm3 = create_project_media team: @team, media: create_uploaded_video
Bot::Alegre.stubs(:request).with('post', '/similarity/sync/video', @params).returns({
Bot::Alegre.stubs(:request).with('post', '/video/similarity/search/', @params).returns({
result: [
{
context: [
Expand Down
38 changes: 8 additions & 30 deletions test/models/bot/alegre_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ def teardown
end

test "should unarchive item after running" do
WebMock.stub_request(:delete, 'http://alegre/text/similarity/').to_return(body: {success: true}.to_json)
stub_configs({ 'alegre_host' => 'http://alegre', 'alegre_token' => 'test' }) do
WebMock.stub_request(:delete, 'http://alegre/text/similarity/').to_return(status: 200, body: '{}')
pm = create_project_media
Expand Down Expand Up @@ -213,13 +212,8 @@ def teardown
end

test "should use OCR data for similarity matching" do
WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(body: {}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').to_return(body: {
'result': {
'language': 'en',
'confidence': 1.0
}
}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').with(body: { text: 'Foo bar' }.to_json).to_return(status: 200, body: '{}')
WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}')
pm = create_project_media team: @team
pm2 = create_project_media team: @team
Bot::Alegre.stubs(:get_items_with_similar_description).returns({ pm2.id => {:score=>0.9, :context=>{"team_id"=>@team.id, "field"=>"original_description", "project_media_id"=>pm2.id, "has_custom_id"=>true}, :model=>"elasticsearch"} })
Expand Down Expand Up @@ -266,14 +260,8 @@ def teardown

# This test to reproduce errbit error CHECK-1218
test "should match to existing parent" do
WebMock.stub_request(:delete, 'http://alegre:3100/text/similarity/').to_return(body: {success: true}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(body: {}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').to_return(body: {
'result': {
'language': 'en',
'confidence': 1.0
}
}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').with(body: { text: 'Foo bar' }.to_json).to_return(status: 200, body: '{}')
WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}')
pm_s = create_project_media team: @team
pm = create_project_media team: @team
pm2 = create_project_media team: @team
Expand All @@ -289,14 +277,9 @@ def teardown
end

test "should use transcription data for similarity matching" do
WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').with(body: { text: 'Foo bar' }.to_json).to_return(status: 200, body: '{}')
WebMock.stub_request(:delete, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}')
WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(body: {}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').to_return(body: {
'result': {
'language': 'en',
'confidence': 1.0
}
}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}')
json_schema = {
type: 'object',
required: ['job_name'],
Expand All @@ -321,13 +304,8 @@ def teardown
end

test "should check existing relationship before create a new one" do
WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(body: {}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').to_return(body: {
'result': {
'language': 'en',
'confidence': 1.0
}
}.to_json)
WebMock.stub_request(:post, 'http://alegre:3100/text/similarity/').to_return(status: 200, body: '{}')
WebMock.stub_request(:post, 'http://alegre:3100/text/langid/').with(body: { text: 'Foo bar' }.to_json).to_return(status: 200, body: '{}')
pm = create_project_media team: @team
pm2 = create_project_media team: @team
pm3 = create_project_media team: @team
Expand Down
84 changes: 2 additions & 82 deletions test/models/bot/alegre_v2_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,6 @@ def teardown
assert_equal Bot::Alegre.delete_path(pm1), "/image/similarity/"
end

test "should have host and paths for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
assert_equal Bot::Alegre.host, CheckConfig.get('alegre_host')
assert_equal Bot::Alegre.sync_path(pm1), "/similarity/sync/video"
assert_equal Bot::Alegre.async_path(pm1), "/similarity/async/video"
assert_equal Bot::Alegre.delete_path(pm1), "/video/similarity/"
end

test "should release and reconnect db" do
RequestStore.store[:pause_database_connection] = true
assert_equal Bot::Alegre.release_db.class, Thread::ConditionVariable
Expand All @@ -89,11 +81,6 @@ def teardown
assert_equal Bot::Alegre.generic_package(pm1, "image"), {:doc_id=>Bot::Alegre.item_doc_id(pm1, "image"), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}}
end

test "should create a generic_package for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
assert_equal Bot::Alegre.generic_package(pm1, "video"), {:doc_id=>Bot::Alegre.item_doc_id(pm1, "video"), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}}
end

test "should create a generic_package_audio" do
pm1 = create_project_media team: @team, media: create_uploaded_audio
assert_equal Bot::Alegre.generic_package_audio(pm1, {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)}
Expand All @@ -108,13 +95,6 @@ def teardown
assert_equal Bot::Alegre.store_package(pm1, "image", {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)}
end

test "should create a generic_package_video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
assert_equal Bot::Alegre.generic_package_image(pm1, {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)}
assert_equal Bot::Alegre.store_package_image(pm1, "video", {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)}
assert_equal Bot::Alegre.store_package(pm1, "video", {}), {:doc_id=>Bot::Alegre.item_doc_id(pm1, nil), :context=>{:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}, :url=>Bot::Alegre.media_file_url(pm1)}
end

test "should create a context for audio" do
pm1 = create_project_media team: @team, media: create_uploaded_audio
assert_equal Bot::Alegre.get_context(pm1, "audio"), {:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}
Expand All @@ -125,11 +105,6 @@ def teardown
assert_equal Bot::Alegre.get_context(pm1, "image"), {:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}
end

test "should create a context for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
assert_equal Bot::Alegre.get_context(pm1, "video"), {:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}
end

test "should create a delete_package for audio" do
pm1 = create_project_media team: @team, media: create_uploaded_audio
package = Bot::Alegre.delete_package(pm1, "audio")
Expand All @@ -148,15 +123,6 @@ def teardown
assert_equal package[:quiet], false
end

test "should create a delete_package for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
package = Bot::Alegre.delete_package(pm1, "video")
assert_equal package[:doc_id], Bot::Alegre.item_doc_id(pm1, nil)
assert_equal package[:context], {:team_id=>pm1.team_id, :project_media_id=>pm1.id, :has_custom_id=>true}
assert_equal package[:url].class, String
assert_equal package[:quiet], false
end

test "should run audio async request" do
pm1 = create_project_media team: @team, media: create_uploaded_audio
response = {
Expand Down Expand Up @@ -197,11 +163,6 @@ def teardown
assert_equal Bot::Alegre.isolate_relevant_context(pm1, {"context"=>[{"team_id"=>pm1.team_id}]}), {"team_id"=>pm1.team_id}
end

test "should isolate relevant_context for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
assert_equal Bot::Alegre.isolate_relevant_context(pm1, {"context"=>[{"team_id"=>pm1.team_id}]}), {"team_id"=>pm1.team_id}
end

test "should return field or type on get_target_field for audio" do
pm1 = create_project_media team: @team, media: create_uploaded_audio
Bot::Alegre.stubs(:get_type).returns(nil)
Expand All @@ -216,13 +177,6 @@ def teardown
Bot::Alegre.unstub(:get_type)
end

test "should return field or type on get_target_field for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
Bot::Alegre.stubs(:get_type).returns(nil)
assert_equal Bot::Alegre.get_target_field(pm1, "blah"), "blah"
Bot::Alegre.unstub(:get_type)
end

test "should generate per model threshold for text" do
p = create_project team: @team
pm1 = create_project_media project: p, quote: "testing short text", team: @team
Expand All @@ -242,12 +196,6 @@ def teardown
assert_equal Bot::Alegre.get_per_model_threshold(pm1, sample), {:threshold=>0.9}
end

test "should generate per model threshold for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
sample = [{:value=>0.9, :key=>"video_hash_suggestion_threshold", :automatic=>false, :model=>"hash"}]
assert_equal Bot::Alegre.get_per_model_threshold(pm1, sample), {:threshold=>0.9}
end

test "should get target field for audio" do
pm1 = create_project_media team: @team, media: create_uploaded_audio
assert_equal Bot::Alegre.get_target_field(pm1, nil), "audio"
Expand All @@ -258,11 +206,6 @@ def teardown
assert_equal Bot::Alegre.get_target_field(pm1, nil), "image"
end

test "should get target field for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
assert_equal Bot::Alegre.get_target_field(pm1, nil), "video"
end

test "should parse similarity results" do
pm1 = create_project_media team: @team, media: create_uploaded_audio
results = [
Expand Down Expand Up @@ -528,7 +471,7 @@ def teardown
assert_equal Bot::Alegre.get_items(pm1, nil), {(pm1.id+1)=>{:score=>0.91, :context=>{"team_id"=>pm1.team_id, "has_custom_id"=>true, "project_media_id"=>(pm1.id+1)}, :model=>"audio", :source_field=>"audio", :target_field=>"audio", :relationship_type=>Relationship.suggested_type}}
end

test "should get_confirmed_items" do
test "should get_confirmed_items zzz" do
pm1 = create_project_media team: @team, media: create_uploaded_audio
response = {
"result": [
Expand Down Expand Up @@ -705,21 +648,7 @@ def teardown
test "should relate project media for image" do
pm1 = create_project_media team: @team, media: create_uploaded_image
pm2 = create_project_media team: @team, media: create_uploaded_image
Bot::Alegre.stubs(:get_similar_items_v2).returns({pm2.id=>{:score=>0.91, :context=>{"team_id"=>pm2.team_id, "has_custom_id"=>true, "project_media_id"=>pm2.id}, :model=>"image", :source_field=>"image", :target_field=>"image", :relationship_type=>Relationship.suggested_type}})
relationship = nil
assert_difference 'Relationship.count' do
relationship = Bot::Alegre.relate_project_media(pm1)
end
assert_equal relationship.source, pm2
assert_equal relationship.target, pm1
assert_equal relationship.relationship_type, Relationship.suggested_type
Bot::Alegre.unstub(:get_similar_items_v2)
end

test "should relate project media for video" do
pm1 = create_project_media team: @team, media: create_uploaded_video
pm2 = create_project_media team: @team, media: create_uploaded_video
Bot::Alegre.stubs(:get_similar_items_v2).returns({pm2.id=>{:score=>0.91, :context=>{"team_id"=>pm2.team_id, "has_custom_id"=>true, "project_media_id"=>pm2.id}, :model=>"video", :source_field=>"video", :target_field=>"video", :relationship_type=>Relationship.suggested_type}})
Bot::Alegre.stubs(:get_similar_items_v2).returns({pm2.id=>{:score=>0.91, :context=>{"team_id"=>pm2.team_id, "has_custom_id"=>true, "project_media_id"=>pm2.id}, :model=>"audio", :source_field=>"audio", :target_field=>"audio", :relationship_type=>Relationship.suggested_type}})
relationship = nil
assert_difference 'Relationship.count' do
relationship = Bot::Alegre.relate_project_media(pm1)
Expand Down Expand Up @@ -747,13 +676,4 @@ def teardown
pm = create_project_media team: @team, media: create_uploaded_image
assert_equal({}, Bot::Alegre.get_similar_items_v2(pm, nil))
end

test "should not relate project media for video if disabled on workspace" do
tbi = TeamBotInstallation.where(team: @team, user: @bot).last
tbi.set_video_similarity_enabled = false
tbi.save!
Bot::Alegre.stubs(:merge_suggested_and_confirmed).never
pm = create_project_media team: @team, media: create_uploaded_video
assert_equal({}, Bot::Alegre.get_similar_items_v2(pm, nil))
end
end

0 comments on commit bbce222

Please sign in to comment.